<?php
class WalutyComponent extends Object {	
	var $components = array( 'Auth','Session','RequestHandler');

    public function get(){
    	if($this->Session->read('Waluty.id') != date('Y-m-d')){
	    	$nbp = $this->nbp_import();
	    	if(is_array($nbp)){
		    	$this->Session->write('Waluty.id',$nbp['TabelaKursow']['data_publikacji']);
		    	$waluty = array();
		    	$kursy = array();
		    	foreach ($nbp['TabelaKursow']['Pozycja'] as $key => $w) {
		    		$waluty[$w['kod_waluty']] = $w['kod_waluty'].' - '.$w['nazwa_waluty'];	    		
		    		$kursy[$w['kod_waluty']] = array('kurs_sredni'=>$w['kurs_sredni'],'przelicznik'=>$w['przelicznik']);
		    	}
		    	
		    	$this->Session->write('Waluty.waluty',$waluty);
		    	$this->Session->write('Waluty.kursy',$kursy);	
	    	
	    	}
    	}    
    }
    

    private function nbp_import($type = "array"){
//    	Configure::write('debug', 0);
//		$this->autoRender = false;

		// import XML class 
	    App::import('Xml'); 
	
	    // your XML file's location 
	    $file = "http://www.nbp.pl/Kursy/xml/".$this->aktualny_xml().".xml"; 
	    if(file_exists($file)){
		    $parsed_xml =& new XML($file,array('cdata'=>false));
		    switch($type){	    	
		    	case "xml":  return $parsed_xml; break; // return as xml
		    	default: return $parsed_arr = Set::reverse($parsed_xml); // return as array 
		    }  	
	    }
    }
    
    /**
     * ustalenie nazwy pliki z aktualnymi kursami
     * @param unknown_type $strTabela
     * @return unknown_type
     */
	private function aktualny_xml($strTabela='a'){
		 $strDzisiejszyXML = '';
         $fp = fsockopen("www.nbp.pl", 80, $errno, $errstr, 30);
         if (!$fp) {
             echo "$errstr ($errno) \n";
		}else {
             $out = "GET /Kursy/xml/dir.txt HTTP/1.1\r\n";
             $out .= "Host: www.nbp.pl\r\n";
             $out .= "Connection: Close\r\n\r\n";
             fwrite($fp, $out);
         while (!feof($fp)) {
             $arrPlikiXML[] = fgets($fp, 128);
             }
         fclose($fp);
		}
         $arrPlikiXML = array_reverse ($arrPlikiXML);
         for($i=0; $i<=6; $i++){
             $strNazwa=trim($arrPlikiXML[$i]);
             if(substr($strNazwa,0,1)==$strTabela){
                 $strDzisiejszyXML=trim($arrPlikiXML[$i]);
                 break;
             }
         }
         return $strDzisiejszyXML;
     }
   
}